package com.example.tnot.Student;

import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.widget.Button;
import android.widget.Toast;
import android.widget.VideoView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import com.bumptech.glide.Glide;

import com.example.tnot.R;

import java.io.File;

public class DebugVideoActivity extends AppCompatActivity {
    private String videoName = "jl.mp4";
    private VideoView videoView;
    private Button btnPlay, btnPause, btnStop;

    // 权限请求码
    private static final int REQUEST_VIDEO_PERMISSION = 101;
    // 权限数组 - 适配不同Android版本
    private String[] permissions;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.debug_video);

        // 初始化控件
        videoView = findViewById(R.id.videoView);
        btnPlay = findViewById(R.id.btnPlay);
        btnPause = findViewById(R.id.btnPause);
        btnStop = findViewById(R.id.btnStop);

        // 根据Android版本设置需要请求的权限
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.TIRAMISU) {
            // Android 13及以上使用新的媒体权限
            permissions = new String[]{android.Manifest.permission.READ_MEDIA_VIDEO};
        } else {
            // 旧版本使用存储权限
            permissions = new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE};
        }

        // 直接请求权限 - 不显示额外对话框，让系统原生权限框直接弹出
        requestVideoPermission();
    }

    // 直接请求权限的方法
    private void requestVideoPermission() {
        // 检查是否已经有权限
        if (ContextCompat.checkSelfPermission(this, permissions[0])
                == PackageManager.PERMISSION_GRANTED) {
            // 已有权限，直接设置视频
            setupVideoPlayer();
        } else {
            // 没有权限，直接请求 - 这会触发系统的权限对话框
            ActivityCompat.requestPermissions(
                    this,
                    permissions,
                    REQUEST_VIDEO_PERMISSION
            );
        }
    }

    // 设置视频播放器
    private void setupVideoPlayer() {
        // 使用系统API获取Movies目录
        File moviesDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES);
        File videoFile = new File(moviesDir, videoName);

        // 检查文件是否存在
        if (!videoFile.exists()) {
            Toast.makeText(this, "视频文件不存在: " + videoFile.getPath(), Toast.LENGTH_LONG).show();
            return;
        }

        // 设置视频路径
        videoView.setVideoURI(Uri.fromFile(videoFile));

        // 准备播放
        videoView.setOnPreparedListener(mp -> {
            Toast.makeText(this, "视频准备就绪，点击播放按钮开始", Toast.LENGTH_SHORT).show();
        });

        // 播放完成后重新开始
        videoView.setOnCompletionListener(mp -> videoView.start());

        // 播放按钮
        btnPlay.setOnClickListener(v -> {
            if (!videoView.isPlaying()) {
                videoView.start(); // 开始播放
            }
        });

        // 暂停按钮
        btnPause.setOnClickListener(v -> {
            if (videoView.isPlaying()) {
                videoView.pause(); // 暂停播放
            }
        });

        // 停止按钮
        btnStop.setOnClickListener(v -> {
            videoView.stopPlayback(); // 停止播放
            setupVideoPlayer(); // 重新准备视频
        });
    }

    // 处理权限请求结果
    @Override
    public void onRequestPermissionsResult(int requestCode,
                                           String[] permissions,
                                           int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        if (requestCode == REQUEST_VIDEO_PERMISSION) {
            // 检查权限是否被授予
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // 权限被允许，设置视频
                setupVideoPlayer();
            } else {
                // 权限被拒绝，显示提示
                Toast.makeText(this, "权限被拒绝，无法播放视频", Toast.LENGTH_LONG).show();
            }
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (videoView.isPlaying()) {
            videoView.pause();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        videoView.stopPlayback(); // 释放资源
    }
}
